package com.crt.openapi.modules.apiinterface.dao;

import java.util.List;

import com.crt.openapi.common.BaseDao;
import com.crt.openapi.modules.apiinterface.dao.vo.ApiPubInterfaceInf;
import com.crt.openapi.modules.apiinterface.dao.vo.KeyInt;
import com.crt.openapi.modules.common.domain.entity.ApiInterface;

/**
 * 
 * 
 * @Author zhaoqinli
 * @Version 2.0
 * @Date 2016年9月26日
 *
 */
public interface ApiInterfaceInfDao extends BaseDao<ApiInterface> {
	/**
	 * 分页条件查询
	 * @param pageIndex 起始角标
	 * @param pageSize  分页条数
	 * @param ApiInterface  查询条件
	 * @return  List<ApiInterface>
	 */
	public List<ApiInterface> selectListByPage(int pageIndex, int pageSize, ApiInterface apiInterface);
	/**
	 * 获取数据总条数
	 * @param apiInterface 查询条件
	 * @return int 
	 */
	int selectCountByPage(ApiInterface apiInterface);
	
	/**
	 * 分页查询用户发布的接口列表
	 * @param pageIndex 起始页码
	 * @param pageSize 分页条数
	 * @param apiPubInterface 查询条件
	 * @return
	 */
	public List<ApiPubInterfaceInf> selectPubListByPage(int pageIndex, int pageSize, ApiPubInterfaceInf apiPubInterface);
	
	/**
	 * 获取发布接口数据的总条数
	 * @param apiPubInterface
	 * @return
	 */
	public int selectPubCountByPage(ApiPubInterfaceInf apiPubInterface);
	
	/**
	 * 保存接口数据
	 * 根据主键或唯一索引判断，不存在即插入，存在即修改
	 * @param record
	 * @return
	 */
	int insertIgnoreSelective(ApiInterface record);
	
	/**
	 * 根据ApiId查询接口数据
	 * @param apiId
	 * @return
	 */
	public ApiInterface selectByApiId(String apiId);
	
	/**
	 * 分页查询允许订阅的接口
	 * @param start
	 * @param size
	 * @param record
	 * @return
	 */
	public List<ApiPubInterfaceInf> selectAllowSubListByPage(int pageIndex, int pageSize, ApiPubInterfaceInf record);
	
	/**
	 * 分页查询允许订阅的接口总数
	 * @param start
	 * @param size
	 * @param record
	 * @return
	 */
	public int selectAllowSubCountByPage(ApiPubInterfaceInf record);
	
	/**
	 * 根据apiId更新信息
	 * @param record
	 * @return
	 */
	public int updateByApiIdSelective(ApiInterface record);
	/**
	 * 根据ApiId查询接口数据
	 * @param apiId
	 * @return
	 */
	public ApiPubInterfaceInf selectApiPubInterfaceInfByApiId(String apiId);
	
	/**
	 * 查询所有的问题
	 * @param apiPubInterfaceInf
	 * @return
	 */
	public List<ApiPubInterfaceInf> selectAllApiInterface(ApiPubInterfaceInf apiPubInterfaceInf);
	
	/**
	 * 查询所有的api发布的信息
	 * @param id
	 * @return
	 */
	public ApiPubInterfaceInf selectAllApiPubInterface(int id);
	
	
	public ApiInterface uniqueApi(String apiId);
	
	/***
	 * 查询发布的api信息（不关联api_user_interface_auth）
	 * @param pageIndex
	 * @param pageSize
	 * @param apiPubInterfaceInf
	 * @return
	 */
	public List<ApiPubInterfaceInf> selectPubListByApp(int pageIndex,int pageSize,ApiPubInterfaceInf apiPubInterfaceInf);
	
	public int selectPubCountByApp(ApiPubInterfaceInf apiPubInterfaceInf);
	
	
	List<ApiPubInterfaceInf> selectPubListInfo(ApiPubInterfaceInf inf);
	
	/***
	 * 根据系统Ids批量查询系统对应的API发布数
	 * @param sysIds
	 * @return
	 */
	List<KeyInt> selectPubApiCntBySysIds(List<String> sysIds);
	
	/***
	 * 根据app_id 批量查询app对应的发布数量
	 * @param appIds
	 * @return
	 */
	List<KeyInt> selectPubApiCntByAppIds(List<String> appIds);
	
	List<ApiPubInterfaceInf> selectInfListExtra(ApiPubInterfaceInf inf);
	
	
	
}
